#ifndef CHAPTER02_H
#define CHAPTER02_H

#include "Player.h"
#include "Map.h"
#include "game_common.h"
#include "Item.h"
#include <vector>
#include <string>

// 前向声明
GameState processChapter02Event(Player& player, Map& map, int eventType);

// 第二章地图交互
GameState handleChapter02Input(Player& player, Map& map, char input);

// 初始化第二章
void initChapter02();

// 显示第二章开场文本
void text2_01();

// 运行第二章
void runChapter02(Player& player, Map& map);

// 第一部分：飞艇库房探索
void processAirshipWarehouse(Player& player, Map& map);

// 第二部分：空洞回廊遭遇战
void processHollowCorridor(Player& player, Map& map);

// 第三部分：与影共舞（星期五交互）
void processShadowDance(Player& player, Map& map);

// 第四部分：黑幕降临
void processBlackCurtain(Player& player, Map& map);

// 陷阱处理函数
bool handleTrapDuskCorridor(Player& player);               // 迟暮回廊
bool handleTrapOverlappingLarynx(Player& player);          // 叠影之喉
bool handleTrapHallOfRecantation(Player& player);           // 悔过镜廊
bool handleTrapBoneChimeTiles(Player& player);              // 骨响地砖

// 战斗函数
bool battleWithDomeWanderers(Player& player);               // 穹顶徘徊者
bool battleWithRustyGuard(Player& player);                  // 锈蚀看守
bool battleWithSteamEruptor(Player& player);                // 蒸汽喷涌者
bool battleWithRustyJaw(Player& player);                    // 锈蚀巨颚
bool battleWithSilentPredator(Player& player);              // 寂静掠食者

// 道具获取函数
void obtainChapter02Items(Player& player, int itemId);

// 热气球修复检查
bool checkBalloonRepair(Player& player);

// 星期五对话交互
void interactWithFriday(Player& player);

// 新增枚举：第二章道具ID
enum class Chapter02ItemId {
    BROKEN_COMPASS = 1,        // 破碎的罗盘
    ANCIENT_DAGGER,            // 古老匕首
    HALLUCINOGENIC_MOSS,       // 致幻苔藓团块
    INSULATING_GEL,            // 绝缘凝胶
    WATCHMAN_EYE,              // 守夜人的焦黑眼珠
    WATER_PURIFICATION_TABLETS,// 压缩净水片
    WORN_TOW_ROPE,             // 磨损的牵引索
    LOW_FREQ_RESONATOR,        // 低频共鸣器
    HIGH_PRESSURE_VALVE,       // 高压蒸汽阀芯
    BAT_SKIN_PATCH,            // 修补用巨蝠皮膜
    WAREHOUSE_MASTER_KEY,      // 飞艇库房主控钥匙
    THICK_COOLANT,             // 浓稠冷却液
    SONIC_DECOY,               // 声波诱饵
    STRUCTURE_SCANNER,         // 结构扫描仪（残破）
    EMERGENCY_REPAIR_KIT,      // 应急修补包
    SIGNAL_GUN,                // 信号枪
    SILENT_CORE,               // 寂静核心
    DARK_CORE                  // 黑暗核心
};

// 新增枚举：第二章状态效果
enum class Chapter02Status {
    NONE,                      // 无
    HALLUCINATION,             // 幻觉
    FRAGILE_HEART,             // 脆弱的心
    CRUEL,                     // 残忍
    RESPONSIBLE_HEART,         // 责任之心
    GUILTY_HEART,              // 愧疚之心
    EMPTY_HEART,               // 空洞之心
    RADIATED,                   // 辐射影响
    DARK_AWARENESS          // 黑暗意识
};

// 新增函数声明
bool hasRequiredItem(const Player& player, Chapter02ItemId itemId);
void addChapter02Status(Player& player, Chapter02Status status, int level = 1);
bool hasChapter02Status(const Player& player, Chapter02Status status);
void removeChapter02Status(Player& player, Chapter02Status status);
void processChapter02StatusEffects(Player& player);
bool checkStat(const Player& player, int statValue, int difficulty);
void displayChapter02HUD(const Player& player);

#endif // CHAPTER02_H
